初學者對於Java的=等於,容易混淆,因為程式中所指的=跟從小到大所學的數學概念不同,以下簡述一個等於與兩個等於的差異,另外還有第三種等於,這三種意義是不同的唷。
= 是指定運算,又稱為賦值運算符號,將右側的值或結果,拋給左側的變數存起來,例如:
int age = 18; 意指age變數被賦值18
因此,Java的「一個=」,並不是數學的「等於」,而是「指定」的意思。
== 是關係運算子,用來檢查兩側的變數值是否相等,回傳布林值(成立回傳true or 不成立回傳false),因此,兩個等號==才是數學上所稱的等於,例如:
x == y ; 意指x等於y
x != y ; 意指x不等於y
※關係運算子除了有==(等於)、!=(不等於),另外也有>大於、<小於、<=小於等於、>=大於等於。
若是用在數據,檢查的是實際值;
若是用在對象,比較的是記憶體址。
字串String的比較不能使用==,如前述所示,比較的是值或其址,若要比較實際內容,就要使用equals()方法。
String的比較要用(s1.equals
(s2));
public static void main(String args[]){
String s1 = "Hi";
String s2 = "Hi";
String s3 = new String("hi");
System.out.pringln(s1==s2); //true,因為s1跟s2是相同址(同字串池物件)。
System.out.pringln(s1==s3); //false,因s3是new新址,故不相同。
System.out.println(s1.equals(s2)); //true,因為hi等同hi
System.out.println(s1.equals(s3)); //true,同上